package flyweighgt_pattern.ex2;

/**
 * 享元模式示例
 * @author 申书航
 * @version 1.0
 *
 * 享元模式是一种结构型设计模式，用于通过共享对象来减少内存使用，提高性能。
 * 在这个示例中，Alchemist（炼金术士）类的实例通过共享其状态（如名字、药水状态等）来实现。
 *
 * App类是程序的入口点，主要演示了如何创建和使用Alchemist对象。
 *
 * 在main方法中，首先创建了一个Alchemist对象并设置名称，然后执行了一些操作（饮用药水、出售药水），
 * 这些操作可能会改变对象的内部状态，并通过打印输出显示状态的变化。
 */
public class App {

    public static void main(String[] args) {
        Alchemist alchemist = new Alchemist(); // 创建炼金术士对象
        alchemist.setName("John Smith"); // 设置炼金术士的名字
        System.out.println(alchemist); // 打印当前状态
        alchemist.drinkPotion(); // 让炼金术士饮用药水
        System.out.println(alchemist); // 打印饮用后的状态
        alchemist.sellPotion(); // 让炼金术士出售药水
        System.out.println(alchemist); // 打印出售后的状态
    }
}
